package com.example.myblog_ssm.mapper;

import com.example.myblog_ssm.entity.ArticleInfo;
import com.example.myblog_ssm.entity.VO.UserInfoVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: 22479
 * Date: 2023-03-21
 * Time: 9:37
 */
@Mapper
public interface ArticleMapper {

    /**
     * 获取左侧用户信息 文章数量
     *
     * @param uid
     * @return
     */
    UserInfoVO getArtCountByUid(@Param("uid") Integer uid);

    /**
     * 获取用户之间写的文章列表
     *
     * @param uid
     * @return
     */
    List<ArticleInfo> getMyList(@Param("uid") Integer uid);

    /**
     * 删除文章功能 当且仅当id 存在 且 uid对应了当前文章作者
     *
     * @param id
     * @param uid
     * @return
     */
    int del(@Param("id") Integer id, @Param("uid") Integer uid);

    /**
     * 文章详情页通过ID获取文章
     *
     * @param id
     * @return
     */
    ArticleInfo getDetail(@Param("id") Integer id);

    /**
     * 阅读量自增
     *
     * @param id
     * @return
     */
    int incrRcount(@Param("id") Integer id);

    /**
     * 发布文章
     *
     * @param articleInfo
     * @return
     */
    int add(ArticleInfo articleInfo);

    /**
     * 修改已发布的文章
     *
     * @param articleInfo
     * @return
     */
    int update(ArticleInfo articleInfo);

    /**
     * 分页功能
     *
     * @param psize
     * @param offsize
     * @return
     */
    List<ArticleInfo> getListByPage(@Param("psize") Integer psize,
                                    @Param("offsize") Integer offsize);

    /**
     * 数据库中文章总数
     *
     * @return
     */
    int getCount();

    /**
     * 定时发布文章
     *
     * @return
     */
    int scheadd(ArticleInfo articleInfo);
}
